Skip to content

Conversation

@y-okt
Copy link
Contributor

@y-okt y-okt commented Jul 26, 2025

TLDR

As described in #1118, enable users to include files and folders from disparate locations within a single session, creating a virtual workspace. This will improve workflow flexibility, especially when related project files are spread across different folders.
This was partially implemented in #4605 , and was suggested by @jacob314 to separate PRs, and this is one of the PRs to add --include-directories option. In another PR, I'm planning to work on /directory add <dir>, /directory show, and configuration supports.

Dive Deeper

Supported --include-directories flag. By this flag, the following features are supported.

  • when inputting "@" (e.g. @package.json), the paths to the file in the target directory and the added directory will be shown
  • edit/glob/grep/ls/read-file/read-many-file/write-file/shell are supported. Note that for edit and write-file, the shell wasn't executable for the files outside of the target directory, so some changes for sandbox was also necessary.

Reviewer Test Plan

  1. Create ../test directory. Within that, have package.json
  2. Pull this branch and locally run `npm install && npm run build && npm run start -- -- include-directories ../test
  3. Confirm the following behaviors.
ReadFile

スクリーンショット 2025-07-27 0 21 42

"@" command

スクリーンショット 2025-07-27 1 00 30

Edit

スクリーンショット 2025-07-27 1 02 42

Write

スクリーンショット 2025-07-27 1 03 45

ReadManyFiles

スクリーンショット 2025-07-27 1 09 18

shell

スクリーンショット 2025-07-27 1 12 24

Testing Matrix

🍏 🪟 🐧
npm run
npx
Docker
Podman - -
Seatbelt - -

Linked issues / bugs

Partially resolve #1118 . Having /directory command and having JSON config (suggested by @allenhutchison (comment
) would be the next steps

@y-okt y-okt requested a review from a team as a code owner July 26, 2025 16:15
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @y-okt, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the CLI's capabilities by introducing multi-directory support, allowing users to define a virtual workspace that spans across various file system locations. This foundational change integrates multi-directory awareness throughout the application, from argument parsing and core configuration to individual file-system manipulation tools and sandbox permissions, ultimately improving workflow flexibility and the model's contextual understanding of the user's environment.

Highlights

  • New CLI Option: Multi-Directory Support: I've introduced a new command-line option, --include-directories, which allows users to specify additional directories to be included in the CLI's virtual workspace. This enables working with files and folders from disparate locations within a single session.
  • Core Workspace Management: A new WorkspaceContext class has been implemented in the core library. This class is responsible for managing all active workspace directories, resolving real paths, and providing robust validation to ensure all file operations occur within the defined workspace boundaries.
  • Enhanced Tool Functionality: Existing file-system related tools, including edit, glob, grep, ls, read-file, read-many-files, and shell, have been updated to leverage the new WorkspaceContext. This allows them to operate seamlessly across all included directories, providing a more comprehensive and flexible user experience.
  • Sandbox Compatibility: I've made necessary adjustments to the macOS sandbox profiles (.sb files) to ensure that file operations performed by tools like edit and write-file can correctly access and modify files within the newly included directories, maintaining security while expanding functionality.
  • Improved Contextual Awareness: The CLI's environment context, which is provided to the underlying language model, now includes information about all active workspace directories. This gives the model a more complete understanding of the user's project structure, even when it spans multiple locations.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@y-okt
Copy link
Contributor Author

y-okt commented Jul 26, 2025

@jacob314 @allenhutchison Could you please review this PR? I addressed your previous reviews in #4605 and separated PRs. This one is responsible for --include-directories option.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces multi-directory support via the --include-directories command-line option, which enhances workspace flexibility. The implementation includes configuration parsing, sandbox profile updates, and modifications to file-system-related tools. The introduction of WorkspaceContext is a good choice for centralizing path validation and ensuring security. Addressing the identified issues in InputPrompt.tsx and atCommandProcessor.ts will improve the stability and predictability of this feature.

@y-okt
Copy link
Contributor Author

y-okt commented Jul 29, 2025

Incorporated this change into #4605. Closing this PR

@y-okt y-okt closed this Jul 29, 2025
@gemini-code-assist
Copy link
Contributor

Thanks for the update, @y-okt! I understand that this PR is being closed as its changes have been incorporated into #4605. Appreciate the clear communication.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enhancement: Multi-Directory Workspace Support

1 participant